package com.tbit.uqbike.webmanager.dao.log;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.tbit.config.datasource.DataSource;
import com.tbit.common.entity.pojo.dto.BarChartRepairDTO;
import com.tbit.common.entity.pojo.vo.DateResult;
import com.tbit.uqbike.object.pojo.statistics.ExportPowerLog;
import com.tbit.uqbike.object.pojo.statistics.RepairLog;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author: chen
 * @Description: 维修记录
 * @Date: 创建于 16:42 2020/3/13
 */
@DS(DataSource.LOG)
public interface RepairLogDao {
    /**
     * 维修次数日期统计
     */
    List<DateResult> statisticsByTime(BarChartRepairDTO barChartRepairDTO);

    /**
     * 获取所有分区数据
     * @param barChartRepairDTO BarChartRepairDTO
     * @return list
     */
    List<DateResult> statisticsByTimeAndRegionId(BarChartRepairDTO barChartRepairDTO);

    /**
     * 维修记录份分页统计详细
     */
    List<RepairLog> queryPage(Map<String, Object> map);

    /**
     * 维修次数统计导出
     */
    List<RepairLog> exportByTime(Map<String, Object> map);

    /**
     * 维修记录份分页统计总数
     */
    Integer queryCount(Map<String, Object> map);

    List<ExportPowerLog> selectByType(HashMap<String, Object> params);

    List<ExportPowerLog> selectByTypeAndRegionId(HashMap<String, Object> params);

    RepairLog getTimeById(String repairLogId);

    /**
     * 根据接单时间分组，获取每天的维修数量
     */
    List<Map<String, Object>> getMaintainNumDay(Map<String, Object> map);

    /**
     * 获取时间内的维修数量
     */
    Map<String, Object> getYesterdayMaintainNum(Map<String, Object> map);

    /**
     * 获取维修数量
     * @param accountId 区域id
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return 维修数量
     */
    Integer getAllRepairCount(@Param("accountId")Integer accountId, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
}
